package co.edu.udea.herbario.dao;

import java.util.List;

import co.edu.udea.herbario.dto.Genero;
import co.edu.udea.herbario.excepcion.Excepcion;

/**
 * Clase de tipo interface que contiene la declaracion de los metodos utilizados para gestionar
 * los datos de la tabla Genero entre la persistencia y la logica de la aplicacion
 * 
 * @author Lorena Orozco, Alejandro Areiza, Marcela Colorado
 *
 */

public interface GeneroDao
{	
	/**
	 * Metodo que obtiene desde la tabla Genero el elemento referenciado con el codigo indicado
	 * como parametro
	 * 
	 * @param cod es el codigo que identifica al genero dentro del sistema
	 * 
	 * @return retorna un objeto de tipo Genero
	 * 
	 * @throws Excepcion
	 */
	public Genero obtener(int cod) throws Excepcion;
	
	/**
	 * Metodo para crear un elemento dentro de la tabla Genero
	 * 
	 * @param gen es un objeto de tipo Genero que contiene los datos del elemento que se desea 
	 * ingresar en la tabla Genero
	 * 
	 * @return retorna un entero: res = 1 si se realizo correctamente la creacion, de lo contrario 
	 * res = -1
	 * 
	 * @throws Excepcion
	 */
	public int crear(Genero gen) throws Excepcion;
	
	/**
	 * Elimina de la tabla Genero el elemento que coincida con los datos que contiene el
	 * objeto pasado como parametro
	 * 
	 * @param gen es un objeto de tipo Genero
	 * 
	 * @return retorna un entero: res = 1 si se realizo correctamente la actualizacion, de
	 * lo contrario res = -1
	 * 
	 * @throws Excepcion
	 */
	public int eliminar(Genero gen) throws Excepcion;
	
	/**
	 * Metodo para obtener de la tabla Genero el registro que corresponde al nombre del genero
	 * especificado como parametro
	 * 
	 * @param gene es el nombre del genero
	 * 
	 * @return retorna un objeto de tipo Genero
	 * 
	 * @throws Excepcion
	 */
	public Genero obtenerGeneroPorNombre(String gene) throws Excepcion;
}
